home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / test / test_new.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2005-10-18  |  5KB  |  166 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.4)
  3.  
  4. from test.test_support import verbose, verify, TestFailed
  5. import sys
  6. import new
  7.  
  8. class Eggs:
  9.     
  10.     def get_yolks(self):
  11.         return self.yolks
  12.  
  13.  
  14. print 'new.module()'
  15. m = new.module('Spam')
  16. if verbose:
  17.     print m
  18.  
  19. m.Eggs = Eggs
  20. sys.modules['Spam'] = m
  21. import Spam
  22.  
  23. def get_more_yolks(self):
  24.     return self.yolks + 3
  25.  
  26. print 'new.classobj()'
  27. C = new.classobj('Spam', (Spam.Eggs,), {
  28.     'get_more_yolks': get_more_yolks })
  29. if verbose:
  30.     print C
  31.  
  32. print 'new.instance()'
  33. c = new.instance(C, {
  34.     'yolks': 3 })
  35. if verbose:
  36.     print c
  37.  
  38. o = new.instance(C)
  39. verify(o.__dict__ == { }, 'new __dict__ should be empty')
  40. del o
  41. o = new.instance(C, None)
  42. verify(o.__dict__ == { }, 'new __dict__ should be empty')
  43. del o
  44.  
  45. def break_yolks(self):
  46.     self.yolks = self.yolks - 2
  47.  
  48. print 'new.instancemethod()'
  49. im = new.instancemethod(break_yolks, c, C)
  50. if verbose:
  51.     print im
  52.  
  53. if c.get_yolks() == 3:
  54.     pass
  55. verify(c.get_more_yolks() == 6, 'Broken call of hand-crafted class instance')
  56. im()
  57. if c.get_yolks() == 1:
  58.     pass
  59. verify(c.get_more_yolks() == 4, 'Broken call of hand-crafted instance method')
  60. im = new.instancemethod(break_yolks, c)
  61. im()
  62. verify(c.get_yolks() == -1)
  63.  
  64. try:
  65.     new.instancemethod(break_yolks, None)
  66. except TypeError:
  67.     pass
  68.  
  69. raise TestFailed, 'dangerous instance method creation allowed'
  70. codestr = '\nglobal c\na = 1\nb = 2\nc = a + b\n'
  71. ccode = compile(codestr, '<string>', 'exec')
  72. import __builtin__
  73. g = {
  74.     'c': 0,
  75.     '__builtins__': __builtin__ }
  76. print 'new.function()'
  77. func = new.function(ccode, g)
  78. if verbose:
  79.     print func
  80.  
  81. func()
  82. verify(g['c'] == 3, 'Could not create a proper function object')
  83.  
  84. def f(x):
  85.     
  86.     def g(y):
  87.         return x + y
  88.  
  89.     return g
  90.  
  91. g = f(4)
  92. new.function(f.func_code, { }, 'blah')
  93. g2 = new.function(g.func_code, { }, 'blah', (2,), g.func_closure)
  94. verify(g2() == 6)
  95. g3 = new.function(g.func_code, { }, 'blah', None, g.func_closure)
  96. verify(g3(5) == 9)
  97.  
  98. def test_closure(func, closure, exc):
  99.     
  100.     try:
  101.         new.function(func.func_code, { }, '', None, closure)
  102.     except exc:
  103.         pass
  104.  
  105.     print 'corrupt closure accepted'
  106.  
  107. test_closure(g, None, TypeError)
  108. test_closure(g, (1,), TypeError)
  109. test_closure(g, (1, 1), ValueError)
  110. test_closure(f, g.func_closure, ValueError)
  111. print 'new.code()'
  112. if hasattr(new, 'code'):
  113.     
  114.     def f(a):
  115.         pass
  116.  
  117.     c = f.func_code
  118.     argcount = c.co_argcount
  119.     nlocals = c.co_nlocals
  120.     stacksize = c.co_stacksize
  121.     flags = c.co_flags
  122.     codestring = c.co_code
  123.     constants = c.co_consts
  124.     names = c.co_names
  125.     varnames = c.co_varnames
  126.     filename = c.co_filename
  127.     name = c.co_name
  128.     firstlineno = c.co_firstlineno
  129.     lnotab = c.co_lnotab
  130.     freevars = c.co_freevars
  131.     cellvars = c.co_cellvars
  132.     d = new.code(argcount, nlocals, stacksize, flags, codestring, constants, names, varnames, filename, name, firstlineno, lnotab, freevars, cellvars)
  133.     d = new.code(argcount, nlocals, stacksize, flags, codestring, constants, names, varnames, filename, name, firstlineno, lnotab)
  134.     
  135.     try:
  136.         d = new.code(-argcount, nlocals, stacksize, flags, codestring, constants, names, varnames, filename, name, firstlineno, lnotab)
  137.     except ValueError:
  138.         pass
  139.  
  140.     raise TestFailed, "negative co_argcount didn't trigger an exception"
  141.     
  142.     try:
  143.         d = new.code(argcount, -nlocals, stacksize, flags, codestring, constants, names, varnames, filename, name, firstlineno, lnotab)
  144.     except ValueError:
  145.         pass
  146.  
  147.     raise TestFailed, "negative co_nlocals didn't trigger an exception"
  148.     
  149.     try:
  150.         d = new.code(argcount, nlocals, stacksize, flags, codestring, constants, (5,), varnames, filename, name, firstlineno, lnotab)
  151.     except TypeError:
  152.         pass
  153.  
  154.     raise TestFailed, "non-string co_name didn't trigger an exception"
  155.     
  156.     class S(str):
  157.         pass
  158.  
  159.     t = (S('ab'),)
  160.     d = new.code(argcount, nlocals, stacksize, flags, codestring, constants, t, varnames, filename, name, firstlineno, lnotab)
  161.     verify(type(t[0]) is S, 'eek, tuple changed under us!')
  162.     if verbose:
  163.         print d
  164.     
  165.  
  166.